package com.zhanglu.fun.tookit.log;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @author zhanglu
 * @description 日志工具类
 * @date 2017/7/2 15:11
 */
public class LogTools {
    private Logger log;

    public LogTools(Class<?> clazz) {
        log = LoggerFactory.getLogger(clazz);
    }

    /**
     * debug日志
     *
     * @param description
     *            描述内容,格式必须例如:
     *            File add:[fileName:{}|the filePath is:{}],分号之前是描述,[]之内是变量，也可以写描述,用|隔开,分号为英文字符
     * @param arguments
     *            无限多参数
     */
    public final void debug(String description, Object... arguments) {
        if(checkDescription(description)){
            log.debug(description, arguments);
        }else{
            log.debug("Print format is wrong");
        }
    }

    /**
     * info日志
     *
     * @param description
     *            描述内容,格式必须例如:
     *            File add:[fileName:{}|the filePath is:{}],分号之前是描述,[]之内是变量，也可以写描述,用|隔开,分号为英文字符
     * @param arguments
     *            无限多参数
     */
    public final void info(String description, Object... arguments) {
        if(checkDescription(description)){
            log.info(description, arguments);
        }else{
            log.info("Print format is wrong");
        }
    }

    /**
     * error日志
     *
     * @param description
     *            File add:[fileName:{}|the filePath is:{}],分号之前是描述,[]之内是变量，也可以写描述,用|隔开,分号为英文字符
     * @param arguments
     *            无限多参数
     */
    public final void error(String description, Object... arguments) {
        if(checkDescription(description)){
            log.error(description, arguments);
        }else{
            log.error("Print format is wrong");
        }
    }

    private static boolean checkDescription(String description) {
        if (description == null
                || description.equals("")
                || !description.contains(":")
                || !description.contains("[")
                || !description.contains("]")
                || !description.contains("{")
                || !description.contains("}")) {
            return false;
        }

        return true;
    }
}
